www.gusucode.com > Wind Turbine Model工具箱matlab源码 > Wind Turbine Model/Wind_Turbine_Model_R13a/Scripts/Extr_Data_RectRounded.m
function [xy_data] = Extr_Data_RectRounded(height, width, radius, varargin) %Extr_Data_RectRounded Produce extrusion data for a rectangle with rounded corners. % [xy_data] = Extr_Data_RectRounded(height, width, radius, varargin) % This function returns x-y data for a rectangle with rounded corners. % You can specify: % Height height % Width width % Corner radius radius % % To see a plot showing parameter values, enter the name % of the function with no arguments % >> Extr_Data_RectRounded % % To see a plot created with your parameter values, % add 'plot' as the final argument % >> Extr_Data_RectRounded(6,4,1,'plot') % Copyright 2012 The MathWorks, Inc. % DEFAULT DATA TO SHOW DIAGRAM if (nargin == 0) height = 6; width = 4; radius = 1; end % CHECK IF PLOT SHOULD BE PRODUCED if (isempty(varargin)) showplot = 'n'; else showplot = varargin; end % CALCULATE QUARTER ELLIPSE xyset1 = [width/2-radius height/2;-width/2+radius height/2]; xyset2 = [Extr_Data_Ring(radius,0,91,179)]; xyset2(:,1) = xyset2(:,1)+(-width/2+radius); xyset2(:,2) = xyset2(:,2)+(height/2-radius); xyset3 = [-width/2 -radius+height/2;-width/2 -height/2+radius]; xyset4 = [Extr_Data_Ring(radius,0,181,269)]; xyset4(:,1) = xyset4(:,1)+(-width/2+radius); xyset4(:,2) = xyset4(:,2)+(-height/2+radius); xyset5 = [-width/2+radius -height/2;width/2-radius -height/2]; xyset6 = [Extr_Data_Ring(radius,0,271,359)]; xyset6(:,1) = xyset6(:,1)+(width/2-radius); xyset6(:,2) = xyset6(:,2)+(-height/2+radius); xyset7 = [width/2 -height/2+radius;width/2 height/2-radius]; xyset8 = [Extr_Data_Ring(radius,0,1,89)]; xyset8(:,1) = xyset8(:,1)+(width/2-radius); xyset8(:,2) = xyset8(:,2)+(height/2-radius); xy_data = [xyset1; xyset2; xyset3; xyset4; xyset5; xyset6; xyset7; xyset8]; % PLOT DIAGRAM TO SHOW PARAMETERS AND EXTRUSION if (nargin == 0 || strcmpi(showplot,'plot')) % PLOT EXTRUSION plot(xy_data(:,1),xy_data(:,2),'b-o','LineWidth',1.5); axis('square'); axis([-1.1 1.1 -1.1 1.1]*max(height/2,width/2)); % SHOW PARAMETERS hold on plot([0 0],[-height/2 height/2],'r-d','MarkerFaceColor','r'); text(0,height/2*0.5,'{\color{red}height}'); plot([-width/2 width/2],[0 0],'g-d','MarkerFaceColor','g'); text(width/2*0.5,height*0.01,'{\color{green}width}'); radius_label_angle = 45*(pi/180); plot([width/2-radius width/2-radius*(1-cos(radius_label_angle))],[height/2-radius height/2-radius*(1-sin(radius_label_angle))],'k-d','MarkerFaceColor','k'); text(width/2-radius/2*(cos(radius_label_angle)),height/2-radius/2*(sin(radius_label_angle)),'{\color{black}radius}','HorizontalAlignment','center'); [width/2-radius/2*(cos(radius_label_angle)),height/2-radius/2*(sin(radius_label_angle))] title(['[xy\_data] = Extr\_Data\_RectRounded(width, height, radius);']); hold off clear xy_data end